package java3_BasicSyntax;
//变量分为局部变量、静态变量、非静态变量（实例变量）

/**
 * 静态与非静态变量、局部变量加载到内存的顺序:
 * 1.加载时机
 * 静态变量：在类加载时被初始化，类加载通常发生在以下几种情况：①创建类的第一个实例；②调用类的静态方法；③访问类的静态变量；④使用反射机制。
 * 非静态变量：在创建类的实例时被初始化
 * 局部变量：局部变量在方法调用时被创建，当方法执行完毕后被销毁
 * 2.存储位置
 * 静态变量：存储在方法区中的静态区
 * 非静态变量：存储在堆内存中，每个实例都有自己的一份非静态变量
 * 局部变量：存储在栈内存中，每个方法都有自己的一份局部变量
 * 3.生命周期
 * 静态变量：在类被卸载之前一直存在于内存中
 * 非静态变量：在实例被垃圾回收之前一直存在于内存中
 * 局部变量：仅在方法执行期间存在于内存中
 */
public class Variables {
    //    初始化的静态变量
    static String c = "字符串";
    //    未初始化的实例变量
    int a;
    //    已经初始化的实例变量
    int b = 1;

    //    局部变量
    public void demo() {
        int a;
    }
}
